home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / bbs / jdrexa10.zip / INST4OF4.DAT / BBS / HELP / TECHDOCS.DOC < prev   
Text File  |  1994-12-18  |  98KB  |  1,940 lines

  1.  
  2.                                 TECHNICAL NOTES
  3.  
  4.  
  5.  
  6.  
  7. CONTENTS        Topic
  8.                 ───────────────────────────────────────────────────────
  9.                 INTRODUCTION
  10.                 DESIGN NOTES
  11.                 DATA STRUCTURES
  12.                   Hear Ye!  Hear Ye!
  13.                   WORDSx.DAT
  14.                   RESULTS
  15.                   Actual records
  16.                 DOOR STRUCTURES
  17.                   Introduction
  18.                   Door designers
  19.                   For all line-based door formats
  20.                   About the door appendices
  21.                   JDRBBSxx.DEF
  22.                   SFDOORS.DAT
  23.                   DORINFOx.DEF
  24.                   CHAIN.TXT
  25.                   DOOR.SYS
  26.                   PCBOARD.SYS version 14.x
  27.                   PCBOARD.SYS version 12.x
  28.                   CALLINFO.BBS
  29.                 VISUAL CYBERSPACE BY 1995
  30.                 JOHN ROHNER
  31.                 APPENDIX B:  Format of JDRBBSxx.DEF
  32.                   Types
  33.                   Log Leader
  34.                   Exchange Rates
  35.                   Max Door Minutes
  36.                   Toggles
  37.                   SL 255
  38.                   Minute-Credits
  39.                   Misc.
  40.                   Fossil stuff
  41.                 APPENDIX C:  SFDOORS.DAT
  42.                 APPENDIX D:  DORINFOx.DEF
  43.                 APPENDIX E:  CHAIN.TXT
  44.                 APPENDIX F:  DOOR.SYS
  45.                 APPENDIX G:  PCBOARD.SYS version 14.x
  46.                 APPENDIX H:  PCBOARD.SYS version 12.x
  47.                 APPENDIX I:  CALLINFO.BBS
  48.                 APPENDIX J:  FidoNet
  49.                 APPENDIX M:  QWK stuff
  50.                 APPENDIX N:  Copyrights
  51.  
  52.  
  53. INTRODUCTION    This file contains the nitty-gritty technical details.
  54.  
  55.  
  56. DESIGN NOTES    The  text  body  of a message is handled  as  a  single  long 
  57.                 string.  Further, the message text is compressed before it is 
  58.                 stored. 
  59.  
  60.                 The menu  system is "promptless",  it does not have a  "Enter 
  61.                 menu selection:" line. 
  62.  
  63.                 Ansi graphics support by both the user and sysop is required. 
  64.                 Color, though, is not.  An extension of this: the caller must 
  65.                 have  "auto  wrap"  or "auto line feed"  (or  whatever  their 
  66.                 program  calls it)  to wrap text when it exceeds column  80--
  67.                 since  ANSI  screens wrap around.   You could change this  by 
  68.                 ending each line of your ANSI's at column 79, but it is a lot 
  69.                 of  unnecessary work.   In the years I have been operating  a 
  70.                 BBS,   only two users have requested ASCII-only displays;   a 
  71.                 user who was using a UNIX communications program,  and a 1200 
  72.                 baud user I accidentally let on my BBS. 
  73.  
  74.                 The  commands,   and most everything,  is  optimized  towards 
  75.                 maximum probability.   Example:  99%  of the callers will not 
  76.                 be new users,  so auto-name detection is used.   This adds  a 
  77.                 little  hassle  for the new (but rare)  callers,   and  saves 
  78.                 hassle  for  the  oft-calling  callers.    Another   example: 
  79.                 uploading  messages,   it is  more of  a  hassle  than simply 
  80.                 answering a Y/N question--but then it is not a hassle for the 
  81.                 99% of message posters who will not be uploading a message. 
  82.  
  83.                 Assumes the system operator will use a fossil driver.
  84.  
  85.                 Automatic byte/time exchange whenever possible and desirable. 
  86.  
  87.                 At  this  level,   major BBS program differences  are  design 
  88.                 differences.  Examples: I do not use pop-up/pop-down windows, 
  89.                 I  instead chose to make all my functions do-able  remotely--
  90.                 which  means everything has be able to work at the other end.  
  91.                 Osiris uses many .EXE files, I prefer one big file.   Maximus 
  92.                 uses text-edited definition files,  I  tried this once,   but 
  93.                 found an internal configuration system to be better.   Almost 
  94.                 all  (maybe all)  BBS programs rely on at least  a  front-end 
  95.                 mailer program to handle mail,  I didn't--instead choosing to 
  96.                 put  those capabilities into the program itself  (it  greatly 
  97.                 reduces the learning process for starting net mail). 
  98.  
  99.  
  100. DATA
  101. STRUCTURES
  102.  
  103. Hear Ye!        Let  it be known that all data structures used with this  BBS 
  104. Hear Ye!        are now,  and will forever be, in flux.  They WILL be altered 
  105.                 from version to version at my whim. 
  106.  
  107. WORDSx.DAT      When  expanded,   these  files contain words of  the  English 
  108.                 language. 
  109.  
  110.                 Each file contains same-length words,  except for WORDS0  and 
  111.                 WORDS9,  which contain same-length fields,  but the words are 
  112.                 packed  with  extra spaces (if less than 4 in WORDS0,  or  if 
  113.                 less than 18  in WORDS9).  For instance,  WORDS1.DAT contains 
  114.                 all 5 letter words. 
  115.  
  116.                 That's  when  the file is unpacked.   Currently it's  packed, 
  117.                 using  a  scheme that allows each letter to use only  5  bits 
  118.                 rather than 8 bits. 
  119.  
  120. RESULTS         Len   Strt-End   Type           Note
  121.                 ───────────────────────────────────────────────────────────────
  122.                 2000     1-2000  100 * (1)      Answers   for   100    voting 
  123.                                                 questions. 
  124.                  102  2001-2102  51 * Integer   Total users per state stats.
  125.                       2103-2285                 [Not Used]
  126.                   15  2286-2300  15 Bytes       Total  bytes  downloaded  for 
  127.                                                 stats screen 7. 
  128.                       2301-2306                 [Not Used]
  129.                    4  2307-2310  Long integer   Current      position      in 
  130.                                                 GOODBYE.TXT. 
  131.                       2311-2514                 [Not used]
  132.                       2515-      (2) * (3)      Data for Statistics screen 1.
  133.                                  (2) * (3)      Data for Statistics screen 2.
  134.                                  (2) * (3)      Data for Statistics screen 3.
  135.                                  (2) * (3)      Data for Statistics screen 4.
  136.                                  (2) * (3)      Data for Statistics screen 5.
  137.                                  (2) * (3)      Data for Statistics screen 6.
  138.                                  (2) * (3)      Data for Statistics screen 7.
  139.                                  (2) * (3)      Data for Statistics screen 8.
  140.                                  (2) * (3)      Data for Statistics screen 9.
  141.                                  (2) * (3)      Data for Statistics screen z.
  142.                                  (2) * (3)      Data for Statistics screen y.
  143.                                  (2) * (3)      Data for Statistics screen x.
  144.                                  (5) * Long     Data for Statistics screen w
  145.                                                 (system totals).
  146.  
  147.                 (1) Integer       Total  number  of users who voted  on  this 
  148.                                   question. 
  149.                     9 * Integer   Voting question answer totals--broken  down 
  150.                                   by answer selected (1 - 9). 
  151.                 (2)               Settings.StatsSize, sysop configurable.
  152.                 (3) String * 30   A user name.
  153.                     Long          An amount.
  154.                 (4)               Number of security level the sysop uses.
  155.                 (5)               2 * (4) + 6
  156.  
  157. Actual Records
  158.  
  159. '
  160. ' UserRecord is the record structure of the USERS file.  In the program the
  161. ' current users' information is stored in USER. in just such a record.
  162. ' Other user data is read in with the AnyUser. variable.
  163. '
  164. TYPE UserRecord                    'Len = 384
  165.   UserName      AS STRING * 30     'Mixed case.
  166.   Password      AS STRING * 15     'Uppercase only.
  167.   CityState     AS STRING * 30     'Mixed case
  168.   SysopNote   AS LONG
  169.   UserNote    AS LONG
  170.   BirthDate     AS INTEGER         'Birthdate of user.
  171.                                    'Date stored in integer form.
  172.   SecLevel      AS INTEGER         '-32,767 to 32,767 security level.
  173.   FirstCall     AS INTEGER         'First date user called.
  174.                                    'Date stored in integer form.
  175.   Attr          AS INTEGER         '16 bits: see useredit.ans
  176.   Toggles       AS INTEGER         '16 bits:
  177.                                    '1 True if should beep after transfers.
  178.                                    '2 True if show Enter Msg line numbers.
  179.                                    '3 True if show Read Msg total lines.
  180.                                    '4 True if should "turbo" out the msgs.
  181.                                    '5 True if user is a male.
  182.                                    '6 True if password assist is on.
  183.                                    '7 True if want to see L&D/Point values.
  184.                                    'rest are used. this needs updating.
  185.   Protocol      AS STRING * 1      'User's procotol default.
  186.   Votes         AS STRING * 100    '=100 Voting questions (Byte answers).
  187.   SubsStart     AS INTEGER         'Subscription start date.
  188.                                    'Date stored in integer form.
  189.   Style         AS STRING * 3
  190.   ElapsedMinsC  AS INTEGER
  191.   ElapsedMins   AS INTEGER         'elapsed non-DL/UL mins of calls today.
  192.   LastCallerNum AS LONG
  193.   LastDateOn    AS INTEGER         'Last time user called.
  194.                                    'Date stored in integer form.
  195.   PswdChange    AS STRING * 1      'Counter towards user change password order.
  196.                                    '0 = off, 1 to 255 ascii value.
  197.   AlterDate     AS INTEGER         'The last date in which they exercised
  198.                                    'their Life & Death options.
  199.                                    'Date stored in integer form.
  200.   Toggles2      AS INTEGER         '16 bits:
  201.   PRStuff       AS STRING * 8      'Peer Review information.
  202.   Connect       AS STRING * 1      'Last baud user connected at.
  203.   NewFilesPtr   AS LONG            '0 to 2,100,000,000
  204.                                    'What the "NewFilesPtr" number was at the last
  205.                                    'time they called, any stuff with
  206.                                    'numbers higher is new to them.
  207.   HighestPtr    AS LONG            '0 to 2,100,000,000 Highest HileFilePtr they
  208.                                    'know about.  NewFilesPtr is call
  209.                                    'dependant--it's updated after they log out,
  210.                                    'this isn't--this is a security measure.
  211.   PagedSysop    AS INTEGER         '0 to 32,767 Number of times they've tried to
  212.                                    'page the sysop.
  213.   Logons        AS INTEGER         '0 to 32,767 Number of logons.
  214.   Attempts      AS STRING * 1      '0 to 255 Number of bad password attempts
  215.                                    'since their last call.
  216.   MinCredits    AS INTEGER         '-32,767 to 32,767
  217.                                    'Number of minutes to add to their daily
  218.                                    'that their security level gets.
  219.   MinMegs       AS INTEGER         '-32,767 to 32,767
  220.                                    'This number is multiplied by 1 megabyte
  221.                                    'and then added to their "number of
  222.                                    'bytes can download" to determine what
  223.                                    'their download bytes limit is.
  224.   MsgsPosted    AS INTEGER         '0 to 32,767 Total number of public messages
  225.                                    '(excluding NetMail) they've posted.
  226.   EMsgsPosted   AS INTEGER         '0 to 32,767 Total number of private
  227.                                    '(excluding feedback and NetMail) messages
  228.                                    'they've posted.
  229.   FMsgsPosted   AS INTEGER         '0 to 32,767 Total number of feedback
  230.                                    'messages they've posted.
  231.   NetMailSent   AS INTEGER         '0 to 32,767 Total number of NetMail letters
  232.                                    'they've sent.
  233.   NetMailRcvd   AS INTEGER         '0 to 32,767 Total number of NetMail letters
  234.                                    'they've received.
  235.   Elapsed       AS INTEGER         '0 to 32,767 Length of previous call(s).
  236.                                    'Never exceeds maximum daily limit for
  237.                                    'whatever security level.
  238.                                    'Download minutes.
  239.   Dnlds         AS INTEGER         '0 to 32,767 Total files downloaded.
  240.   DLBytes       AS LONG            '0 to 2,100,000,000 Total bytes downloaded.
  241.   MinsDLing     AS LONG            '0 to 2,100,000,000 Total number of minutes
  242.                                    'downloading.
  243.   BadDLs        AS INTEGER         '0 to 32,767 Total number of bad DL's.
  244.   Uplds         AS INTEGER         '0 to 32,767 Total files uploaded.
  245.   ULBytes       AS LONG            '-'ve to 2,100,000,000 Total bytes uploaded.
  246.   MinsULing     AS LONG            '0 to 2,100,000,000 Total number of minutes
  247.                                    'uploading.
  248.   BadULs        AS INTEGER         '0 to 32,767 Total number of bad UL's.
  249.   Doors         AS INTEGER         '0 to 32,767 Number of accesses to doors.
  250.   SubsEnd       AS INTEGER         'Date subscription ends.
  251.   HighNotePtr AS LONG
  252.   TotalMonies AS LONG              'total money they've sent.
  253.   LastMonies  AS LONG               'last amount they sent
  254.   Attr2       AS INTEGER
  255.   BytesUToday AS LONG         'use date of last call to determine if current
  256.                               'call means to zero this field.
  257.   BytesUWeek  AS LONG          'this will have to be a weekly event.
  258.                               'problem if user on another node when this 
  259.                               'executes.
  260.   MsgsRcvd    AS INTEGER      'Number of normal messages TO: and read.
  261.   EMsgsRcvd   AS INTEGER      'Number of private messages TO: and read.
  262.   SLSubsEnds  AS INTEGER
  263.   ScreenSize  AS STRING * 1
  264.   MsgRC       AS STRING * 10         'ansi code for reading messages.
  265.   Language    AS STRING * 1
  266.   RealName    AS STRING * 30         'mixed case
  267.   HomePhone     AS STRING * 17
  268.   BBSPhone      AS STRING * 17
  269. END TYPE
  270.  
  271. '
  272. ' MessageRecord is the record structure used for each messages header in
  273. ' the MESSAGES file.  In the program, the message data is stored in the
  274. ' Message. variable with this same record.
  275. '
  276. TYPE MessageRecord               'Len = 136
  277.   Attr          AS INTEGER       '16 bits:
  278.                                  '1 True if a deleted message.
  279.                                  '2 True if Msg body is compressed.
  280.                                  '3 True if this is a reply.
  281.                                  'x True if NetMail
  282.                                  'x True if shouldn't ever NetMail out.
  283.                                  '5 True if shouldn't ever Auto delete.
  284.                                  'x True if should never delete at all.
  285.                                  '8 True if redirected from sysop.
  286.                                  '9 True if redirected from AI.
  287.                                  '10 True if redirected to sysop.
  288.                                  '11 True if redirected to AI.
  289.                                  '12 True if there are file attaches.
  290.                                  '13 True if message will be completed later.
  291.                                  '14 True if any file attaches are free.
  292.                                  '16 True if want's RR (temporary until NetMail)
  293.                                  'Rest are for the future.
  294.   MsgNum        AS LONG          '1 to 2,100,000,000 message number.
  295.                                  'Each message base has it's own message
  296.                                  'counter.
  297.   MsgFrom       AS STRING * 30   'Name of sender.  Mixed case.
  298.   MsgTo         AS STRING * 30   'Name of receiver or "ALL".  Mixed case.
  299.   MsgDateSent   AS INTEGER       'Date message was sent.
  300.                                  'Date stored in integer form.
  301.   MsgTimeSent   AS INTEGER       'Time stored in integer form.
  302.                                  'HHMM and +/-'ve depending on am/pm.
  303.   MsgDateRcvd   AS INTEGER       'Date message was received.  0 if not
  304.                                  'received or sent to "ALL".
  305.                                  'Date stored in integer form.
  306.   MsgTimeRcvd   AS INTEGER       'Time stored in integer form.
  307.                                  'HHMM and +/-'ve depending on am/pm.
  308.   NumOfBytes    AS INTEGER       'Doesn't exceed 8192, message length.
  309.   NumberReplies AS STRING * 1    'This message has been replied to x times.
  310.                                  'This is not the number of active replies.
  311.   TimesRead     AS INTEGER       'Number of times this message has been read.
  312.   LastDateRead  AS INTEGER       'last date anybody read the message.
  313.   MsgSubject    AS STRING * 33   'Compressed text--message subject.
  314.   MsgBase       AS INTEGER       '0 - 32,767 Message bases.
  315.   x             AS INTEGER       'not used
  316.   Attr2         AS INTEGER       'not used, save for future attr2
  317.   SourceAddr    AS STRING * 6          'NetMail source address.
  318.   DestAddr      AS STRING * 6          'NetMail destination address.
  319.   MsgLoc        AS LONG
  320. END TYPE
  321.  
  322.  
  323. '
  324. ' FileListRecord is the data stucture used in the FILELIST file.  The data
  325. ' file containing the information for the various potential downloads.
  326. '
  327. TYPE FileListRecord              'Len = 128
  328.   RFArea     AS INTEGER          '0 to 32,767 File areas.
  329.   NewFilesPtr  AS LONG             'The number each file is given, needs
  330.                                  'not be unique, but represents to the
  331.                                  'system and users when something is new.
  332.                                  'Similar in concept to just checking
  333.                                  'for new file dates since last call.
  334.   LDCount    AS INTEGER          'Chr$(0-28), Chr$(100-199),  A symbolic
  335.                                  'counter and guide about how long a file
  336.                                  'will be on-line (in days), also offers
  337.                                  'opportunity for users to "knock down" or
  338.                                  '"raise up" the "life" of the file.
  339.                                  '100-199 represents 00-99 file points value.
  340.   FName      AS STRING * 12      'The file name.  Including "."
  341.                                  'deliminator--left justified.
  342.   DescLoc    AS LONG
  343.   DescSize   AS INTEGER
  344.   GIFw       AS INTEGER
  345.   GIFh       AS INTEGER
  346.   GIFc       AS INTEGER
  347.   future2    AS STRING * 39      '
  348.   FSize      AS LONG             'The file's size.
  349.   UserName   AS STRING * 30      'Mixed case.  Name of uploader.
  350.   Percentage AS INTEGER          'Percentage rate to credit uploader.
  351.   Password   AS INTEGER          'Two byte (checksum) password.
  352.   Downloaded AS INTEGER          'Number of times downloaded.
  353.   LastDLed   AS INTEGER          'Last date it was downloaded.
  354.   DateULed   AS INTEGER          'Date it was uploaded.
  355.   Attr       AS INTEGER          '16 bits:
  356.                                  '1 True if deleted.
  357.                                  '2 If free.
  358.                                  '3 If not validated yet.
  359.                                  'x If preferred compressed (BBS compressed).
  360.                                  'x If virus checked.
  361.                                  '6 If invisible.
  362.                                  '7 If incomplete.
  363.                                  '8 If a user created extract file.
  364.                                  '9 If free only if callers is 9600+ baud.
  365.                                  'x If downloading counts as an upload.
  366.                                  'rest for the future
  367.   Group      AS INTEGER          'User must be in this group to access.
  368.   GFArea     AS INTEGER          '0 to 32,767 File areas.
  369.   RealDate   AS INTEGER          'Files date on the disk.
  370.   Future     AS STRING * 5
  371. END TYPE
  372.  
  373. '
  374. ' FileNameInfo is the record for the FILES.IDX file.
  375. '
  376. TYPE FileNameInfo                'Len = 26
  377.   FName AS STRING * 12           'File name, including "." deliminator.
  378.                                  'Left justified.
  379.   FLoc  AS LONG                  'Location in FILELIST of this file's data.
  380.   FSize AS LONG                  'Size of file in bytes.
  381.   Attr  AS INTEGER               '16 bits:
  382.                                  '1 True if deleted.
  383.                                  '2 If free.
  384.                                  '3 If not validated yet.
  385.                                  'x If preferred compressed (BBS compressed).
  386.                                  'x If virus checked.
  387.                                  '6 If invisible.
  388.                                  '7 If incomplete.
  389.                                  '8 If a user created extract file.
  390.                                  'x If downloading counts as an upload.
  391.                                  'rest for the future
  392.   RFArea AS INTEGER              'Real file area/location of file.
  393.   GFArea AS INTEGER              'Ghost file area/pretend.
  394. END TYPE
  395.  
  396.  
  397. TYPE LevelRecord           'Len = 28
  398.   SecLevel      AS INTEGER
  399.   ShowLevel     AS INTEGER
  400.   PCRatio       AS INTEGER
  401.   BRatio        AS INTEGER
  402.   FRatio        AS INTEGER
  403.   DLMinsPerDay  AS INTEGER
  404.   MinsPerCall   AS INTEGER
  405.   MinsPerDay    AS INTEGER
  406.   StartTime     AS INTEGER
  407.   EndTime       AS INTEGER
  408.   VoteWeight    AS INTEGER
  409.   MinBaud       AS LONG
  410.   MinPassLen    AS INTEGER
  411. END TYPE
  412.                          
  413.  
  414.  
  415. TYPE SettingsRecord              'Len = 1043
  416.   AutoValAfDLx    AS INTEGER
  417.   MaxLinesInMsg   AS INTEGER     'Maximum lines allowed in a message.
  418.   MaxWidthOfMsg   AS INTEGER     'Maximum chars per msg line.
  419.   NewsWidth       AS INTEGER
  420.   MaxUsers        AS INTEGER     'Maximum number of users to keep active.
  421.   MinPKTSqSize    AS LONG
  422.   LDDelSL         AS INTEGER
  423.   ExchBytes       AS LONG
  424.   ExchMins        AS INTEGER
  425.   SLAfSubsEnds    AS INTEGER
  426.   CanVoteSL       AS INTEGER
  427.   MaxPAttempts    AS INTEGER
  428.   MaxLAttempts    AS INTEGER
  429.   TakeOffBytes    AS INTEGER     '200 -> 200%
  430.   CreditAfDLXLim  AS INTEGER
  431.   LoggingTog1     AS INTEGER
  432.   BufferSize      AS INTEGER     'buffer is made in 4096 increments.
  433.   MinSpace        AS LONG
  434.   MinULSpace      AS LONG
  435.   LDDelSpace      AS LONG
  436.   TargetSpace     AS LONG
  437.   BeSureSpace     AS LONG
  438.   LogoTimeOut     AS INTEGER
  439.   AIHelpSpace     AS LONG
  440.   ResetConnect    AS INTEGER
  441.   ResetNoConnect  AS INTEGER
  442.   CommPort        AS INTEGER
  443.   SLEachOther     AS INTEGER
  444.   TimeOut         AS INTEGER
  445.   AINewUserMsg    AS STRING * 3
  446.   Node            AS INTEGER
  447.   CBVLDSL         AS INTEGER
  448.   StatsSize       AS INTEGER
  449.   RambleAddSL     AS INTEGER
  450.   WorstSL         AS INTEGER
  451.   WorstLogons     AS INTEGER
  452.   LogLeader       AS STRING * 5
  453.   MaxIDLines      AS INTEGER
  454.   ChatWords       AS INTEGER
  455.   NewFilesPtr       AS LONG
  456.   Sysop           AS STRING * 30      'Mixed case.
  457.   MassMail        AS INTEGER
  458.   PPRSL           AS INTEGER
  459.   SysopOnlyUL     AS INTEGER
  460.   BiSL            AS INTEGER
  461.   MaxRambles      AS INTEGER
  462.   MaxPosts        AS INTEGER
  463.   ModemBaud       AS LONG
  464.   PRMsgStart      AS STRING * 3
  465.   PRMsgPassed     AS STRING * 3
  466.   PRMsgFailed     AS STRING * 3
  467.   PRMinSL         AS INTEGER
  468.   PRMaxSL         AS INTEGER
  469.   DrDrives        AS STRING * 5
  470.   StartTime       AS STRING * 8
  471.   LastCallersSize AS STRING * 1
  472.   BiDayBaud       AS INTEGER
  473.   DefaultLang     AS STRING * 5
  474.   x               AS STRING * 3
  475.   CreditAfDLDLim  AS INTEGER
  476.   Key1            AS STRING * 20
  477.   Key2            AS STRING * 20
  478.   Key3            AS STRING * 20
  479.   PRCount         AS INTEGER
  480.   FirstCommand    AS STRING * 4
  481.   Toggles0        AS INTEGER
  482.   Toggles7        AS INTEGER
  483.   PostRingSL      AS INTEGER
  484.   GIPID           AS STRING * 8
  485.   G640x480x256    AS INTEGER
  486.   G800x600x256    AS INTEGER
  487.   DLMsgsMax       AS INTEGER
  488.   MaxMsgsToPKT    AS INTEGER
  489.   MenuSysThres    AS STRING * 1
  490.   SumLogDays      AS INTEGER
  491.   CallerNumber    AS LONG
  492.   ModemInit       AS STRING * 30
  493.   ModemAnswer     AS STRING * 15
  494.   NewUserPswd     AS STRING * 15
  495.   ProtDLPctgOvR   AS INTEGER
  496.   ProtDLPDaysOvR  AS INTEGER
  497.   GivePctgBEaDL   AS INTEGER
  498.   GivePctgMEaDL   AS INTEGER
  499.   Toggles1        AS INTEGER
  500.   Toggles2        AS INTEGER
  501.   Toggles3        AS INTEGER
  502.   Toggles4        AS INTEGER
  503.   Toggles5        AS INTEGER
  504.   Toggles6        AS INTEGER
  505.   ReviewLen       AS INTEGER
  506.   LoggingTog2     AS INTEGER
  507.   DebugTog        AS INTEGER
  508.   DescH           AS INTEGER
  509.   DescHwDIZ       AS INTEGER
  510.   ModemOffHook    AS STRING * 30
  511.   MinSLLevelX     AS INTEGER
  512.   WFCHelpBlk      AS INTEGER
  513.   TakeOffMins     AS INTEGER     '200 -> 200%
  514.   MaxDLMsgsSize   AS LONG
  515.   ShuttlePswd     AS STRING * 30
  516.   MaxGMode        AS INTEGER
  517.   Morning         AS INTEGER
  518.   Afternoon       AS INTEGER
  519.   Evening         AS INTEGER
  520.   MinDescLength   AS INTEGER
  521.   Toggles8        AS INTEGER
  522.   Toggles9        AS INTEGER
  523.   CreditAfDLx     AS INTEGER
  524.   StartDate       AS INTEGER
  525.   FPWorthInBytes  AS LONG
  526.   Phone           AS STRING * 20
  527.   FC4Msg          AS LONG
  528.   RumorsLoc       AS LONG
  529.   Future          AS STRING * 20        'for still more stuff.
  530.   HourlyDate      AS INTEGER
  531.   HourlyData      AS STRING * 192
  532.   Colors1         AS STRING * 15
  533.   Colors2         AS STRING * 15
  534.   Colors3         AS STRING * 15
  535.   Colors4         AS STRING * 15
  536.   Colors5         AS STRING * 15
  537.   Colors6         AS STRING * 15
  538.   Colors7         AS STRING * 15
  539.   Colors8         AS STRING * 15
  540.   Colors9         AS STRING * 15
  541.   Colors10        AS STRING * 15
  542.   Colors11        AS STRING * 15
  543.   Colors12        AS STRING * 15
  544.   Colors13        AS STRING * 15
  545.   AllIs           AS STRING * 30
  546.   DefaultMsgRC    AS STRING * 10
  547.   PswdOverWrite   AS STRING * 15
  548.   BBSLocation     AS STRING * 30
  549.   BBSName         AS STRING * 30
  550.   WFCWPChar       AS STRING * 1
  551.   WFCWPFore       AS STRING * 1
  552.   WFCWPBack       AS STRING * 1
  553.   WFCCLHCoor      AS STRING * 1
  554.   WFCCLVCoor      AS STRING * 1
  555.   WFCCLPText      AS STRING * 10
  556.   WFCCLSText      AS STRING * 10
  557.   WFCCLWidth      AS STRING * 1
  558.   WFCCLHeight     AS STRING * 1
  559.  
  560. END TYPE
  561.  
  562.  
  563. TYPE MessageBaseRecord     'Len = 108
  564.   PostSL     AS INTEGER
  565.   ReadSL     AS INTEGER
  566.   ScanSL     AS INTEGER
  567.   StartTime  AS INTEGER
  568.   EndTime    AS INTEGER
  569.   BufferSize AS INTEGER
  570.   NextNumber AS LONG
  571.   SubType    AS INTEGER                   '16 bits:
  572.                                           '1 true if all messages are from ANON.
  573.                                           '2 true if PRIvate (else PUBlic).
  574.                                           '3 true if NET mail.
  575.                                           '4 true if LOCKed.
  576.                                           '5 true if only sysop can DEL msgs.
  577.                                           '6 true if all messages go to ALL.
  578.                                           '7 true if show "hidden" net info.
  579.                                           'x true if net password protected.
  580.                                           '9 true if an EchoMail area.
  581.                                           'x whether toggled ON or OFF.
  582.                                           'rest for the future
  583.   MsgOp      AS STRING * 30
  584.   Title      AS STRING * 60
  585. END TYPE
  586.  
  587.  
  588.  
  589. TYPE FileAreaRecord           'Len = 410
  590.   MinDLSL    AS INTEGER
  591.   MaxDLSL    AS INTEGER
  592.   MinULSL    AS INTEGER
  593.   MaxULSL    AS INTEGER
  594.   MinScanSL  AS INTEGER
  595.   MaxScanSL  AS INTEGER
  596.   StartTime  AS INTEGER
  597.   EndTime    AS INTEGER
  598.   BufferSize AS INTEGER
  599.   Attr       AS INTEGER                 'x whether toggled ON or OFF.
  600.   MaxMBSize  AS INTEGER
  601.   Template   AS INTEGER
  602.   NewFilesPtr  AS LONG
  603.   FileOp     AS STRING * 30
  604.   Path       AS STRING * 64
  605.   Title      AS STRING * 72
  606.   AlsoPath1  AS STRING * 36
  607.   AlsoPath2  AS STRING * 36
  608.   AlsoPath3  AS STRING * 36
  609.   AlsoPath4  AS STRING * 36
  610.   AlsoPath5  AS STRING * 36
  611.   AlsoPath6  AS STRING * 36
  612. END TYPE
  613.  
  614.  
  615. TYPE SummaryRec                    'Len = 146
  616.   UserName       AS STRING * 30     'Mixed case.
  617.   Location       AS STRING * 30     'Mixed case.
  618.   BaudRate       AS STRING * 20
  619.   CallerNum      AS LONG
  620.   LastCallerNum  AS LONG
  621.   DateOn         AS INTEGER
  622.   TimeOn         AS INTEGER
  623.   NodeOn         AS INTEGER
  624.   TotalMinsUsed  AS INTEGER
  625.   PagedSysop     AS INTEGER         'Number of times they've tried to page sysop.
  626.   MsgsPosted     AS INTEGER         'Number of public messages posted.
  627.   MsgsRcvd       AS INTEGER
  628.   EMsgsPosted    AS INTEGER         'Number of private messages posted.
  629.   EMsgsRcvd      AS INTEGER
  630.   FMsgsPosted    AS INTEGER         'Number of feedback messages posted.
  631.   NetMailSent    AS INTEGER         'Number of NetMail letters sent.
  632.   NetMailRcvd    AS INTEGER         'Number of NetMail letters received.
  633.   Dnlds          AS INTEGER         'Files downloaded.
  634.   DLBytes        AS LONG            'Bytes downloaded.
  635.   MinsDLing      AS INTEGER         'Number of minutes downloading.
  636.   BadDLs         AS INTEGER         'Number of bad DL's.
  637.   Uplds          AS INTEGER         'Files uploaded.
  638.   ULBytes        AS LONG            'Bytes uploaded.
  639.   MinsULing      AS INTEGER         'Number of minutes uploading.
  640.   BadULs         AS INTEGER         'Number of bad UL's.
  641.   Doors          AS INTEGER         'Number of accesses to doors.
  642.   RamblesMade    AS INTEGER
  643.   RamblesAdded   AS INTEGER  'fixed
  644.   SL             AS INTEGER  'new
  645.   MsgsReadOnLine AS INTEGER  'new
  646.   MsgsUploaded   AS INTEGER  'new
  647.   MsgsDownloaded AS INTEGER  'new
  648. END TYPE
  649.  
  650.  
  651.  
  652.  
  653.  
  654. DOOR
  655. STRUCTURES
  656.  
  657. Introduction    The door-exit files'  purpose is to provide developer's  with 
  658.                 access to user information,  and to provide the BBS with  the 
  659.                 necessary "continue operations" parameters. 
  660.  
  661.                 To  enable the BBS to do a cold restart while maintaining the 
  662.                 caller's   information,    and  the  information  about   the 
  663.                 connection. 
  664.  
  665. Door            Designers  of  doors for use under JDR_BBS  should  make  the 
  666. designers       following assumptions: 
  667.                    ∙ The BBS is using a fossil.   That all comm I/O should be 
  668.                      done through the fossil driver. 
  669.                    ∙ The user and sysop are using ANSI drivers.
  670.                    ∙ The communications format is 8N1.
  671.                    ∙ All events occur after midnight, but after the user logs 
  672.                      off.   So, A "day" should not be handled internally, but 
  673.                      rely  on  an external run of the program to say  when  a 
  674.                      "day"   has changed.   Since a user on at  the  midnight 
  675.                      rollover, should, and is, considered to still be working 
  676.                      during  the previous day.  In other words,  don't let  a 
  677.                      user access the door for two days just because they were 
  678.                      logged in before,  during, and after midnight.   Relying 
  679.                      on a "null run"  of the door program also allows  sysops 
  680.                      to "speed up time"  by saying a day has  passed whenever 
  681.                      they want--although normal operations have the BBS alone 
  682.                      door'ing  to the door program to tell it a day has  just 
  683.                      changed.  If you need a date, use the user's logon date, 
  684.                      not the current date. 
  685.                    ∙ A multi-tasking, multi-nodal environment.
  686.                    ∙ The full screen is usable for the user.
  687.                    ∙ The BBS hardware has a system clock.
  688.                    ∙ That the sysop isn't anywhere near the  computer--should 
  689.                      the door program run into a problem. 
  690.                    ∙ That the user is a novice.
  691.                    ∙ Expect  to  find each of the door files in  the  current 
  692.                      directory (the directory with your door program).    So, 
  693.                      unless you want to use a config file,  don't worry about 
  694.                      paths. 
  695.                    ∙ That  the BBS will allow a user access to that  door  as 
  696.                      many times as the user wants per day and per session (no 
  697.                      "once per day" doors). 
  698.                    ∙ See note on Minute-Credits in Appendix B.
  699.  
  700.                 Upon  exit  to  a  door program,  the BBS will  write  out  a 
  701.                 JDRBBSxx.DEF file and (optionally) an alternate door type.  
  702.                 
  703.                 Only JDRBBSxx.DEF is read back in upon exit from the door.
  704.  
  705.                 The door-op is the one true sysop.  When the door-op uses the 
  706.                 door,  he'll get the 255  SL that most formats use (not  mine 
  707.                 though--see SL fields).  The regular BBS sysop...just another 
  708.                 door user. 
  709.  
  710.                 If  there  are  any problems with the  way  I  implement  the 
  711.                 various door-exit formats,  or you would like me to add  more 
  712.                 fields to my own format, please let me know. 
  713.  
  714.                 See also:  DOORS.DOC
  715.  
  716. For all         I  output the data in "perfect"  form.   That is,  no  spaces 
  717. line-based      before  or after the text/numbers.   All the  characters  are 
  718. door formats    upper-cased (except where noted). 
  719.  
  720.                 When data is read back in, they will again be trimmed on both 
  721.                 ends, and upper-cased. 
  722.  
  723.                 Thus  the door program shouldn't have any trouble reading  or 
  724.                 writing the data,  as it gets it in perfect form,  and It can 
  725.                 return  it  in imperfect form (eg.  numbers  with  spaces  in 
  726.                 front). 
  727.  
  728. About the       If only a quoted output is given (no description)  then  that 
  729. door            will always be the output. 
  730. appendices
  731.                 I've  decided to only support the output of the various  door 
  732.                 types.   I could, very easily, support changes that were done 
  733.                 (such  as bytes the user downloaded)  to that door  file--but 
  734.                 there are just too many unknowns.   Rather than hassle trying 
  735.                 to  figure  it all out,  I'll just make use of a single  door 
  736.                 format  that is read-in-able.   A  lot of the  formats simply 
  737.                 don't have some of the more useful fields. 
  738.  
  739. JDRBBSxx.DEF    Where "xx" is a node number--note, 01 to 99.  But really only 
  740.                 01   to  04  is used right now (it depends  on  the  fossil's 
  741.                 abilities). 
  742.  
  743.                 This is the *official* door type the BBS uses.
  744.  
  745.                 This  is the only door type whose changes are accepted from a 
  746.                 door program. 
  747.  
  748.                 See APPENDIX B for the precise definition.
  749.  
  750. SFDOORS.DAT     Sourced from Spitfire version 3.1 doc's.
  751. (Spitfire)
  752.                 See APPENDIX C for the precise definition.
  753.  
  754. DORINFOx.DEF    Sourced from OLECom version 3.0  doc's and RBBS version 17.3A 
  755. (RBBS)          doc's and source code. 
  756. (QBBS)
  757. (RA)            The "x" represents values 1 to 9, 0, A to Z (in that order).
  758.  
  759.                 See APPENDIX D for the precise definition.
  760.  
  761. CHAIN.TXT       Sourced Mycroft Door Library 3.0's  source code and  Telegard
  762. (WWIV)          Version 2.5i's source code. 
  763. (Telegard)
  764.                 I output the extended (30 line) version of this format.
  765.  
  766.                 See APPENDIX E for the precise definition.
  767.  
  768. DOOR.SYS        This format is an extension of the original GAP format.
  769. (GAP)
  770.                 It's  definition,  and the format I support,  was in  a  file 
  771.                 authored by Raymond Clements, David Terry, and Kenny Gardner. 
  772.  
  773.                 See APPENDIX F for the precise definition.
  774.  
  775. PCBOARD.SYS     Sourced from Auntie version 5.11 doc's.
  776. version 14.x
  777. (PCBoard)       The structure (the whole file)  is used in the PCBoard14 data 
  778. (Auntie)        type. 
  779.  
  780.                 See APPENDIX G for the precise definition.
  781.  
  782. PCBOARD.SYS     Sourced from SearchLight version 1.31 doc's and Mycroft  Door
  783. version 12.x    Library 3.0's source code.
  784. (PCBoard)
  785. (SearchLight)   The structure (the whole file) is used in the PCBoard12  data 
  786.                 type. 
  787.  
  788.                 See APPENDIX H for the precise definition.
  789.  
  790. CALLINFO.BBS    Sourced   from  Mycroft  Door  Library  3.0's  source   code.  
  791. (WildCat!)      Extended  and  tested based on Mark  Kitchen's  "CALLINFO.BBS 
  792.                 Contents Reporter"  program.  Additional parts also came from 
  793.                 Maximus-CBCS 2.0. 
  794.  
  795.                 I am not, as yet, sure which version of the CALLINFO.BBS this
  796.                 is.
  797.  
  798.                 See APPENDIX I for the precise definition.
  799.  
  800.  
  801. VISUAL          This  is  the goal.   This means full  graphics  interaction.  
  802. CYBERSPACE      Comm/BBS program support is not a problem--at the very  least 
  803. BY 1995         users  can  use this software as their comm program,   but  I 
  804.                 doubt it will be necessary. 
  805.  
  806.                 Below I will outline the "next"  needed routine.   One of you 
  807.                 will  have  to design it.   My graphics programming  is  very 
  808.                 limited, and even though that may change at any time, for now 
  809.                 I  can't  do it.   When this routine is completed,   I   will 
  810.                 outline the next needed routine, and so on. 
  811.  
  812.                   3-D routines to recognize hidden points/lines and not
  813.                   draw them.
  814.  
  815.  
  816. JOHN ROHNER     Who am I?
  817.  
  818.                 29.    Cartography  degree from the University  of  Wisconsin 
  819.                 (Madison).
  820.                 
  821.                 Many  years ago I began putting my thoughts and ideas into  a 
  822.                 computer  text  file  because I could  not  juggle  the  many 
  823.                 scribbles  of notes I created it (because I could not  juggle 
  824.                 it  all in my head).   From this emerged a very creative  and 
  825.                 diverse document: JDR_mmyy,  which is still being updated bi-
  826.                 monthly. 
  827.  
  828.                 I needed and wanted fresh thoughts and ideas, so I started 
  829.                 Immortality just before I graduated.
  830.  
  831.                 I  wrote  this  software because no package  came  close  the 
  832.                 potential  capabilities  I  saw  for my own  BBS.    I   view 
  833.                 programming  as the perfect art:  you can create it,  it  has 
  834.                 fractal-like qualities,  and like a fractal you can always go 
  835.                 back to some small part of it and plummet to depths of art on 
  836.                 that piece of code. 
  837.  
  838.                 During  the  first few releases of JDR_BBS,  I   started  the 
  839.                 Church of the One--mostly just a tiny doctrine document,  but 
  840.                 which I  think  contains the perfect foundation for a human's 
  841.                 belief structure. 
  842.  
  843.                 This  software  shows  its  heritage:   things  like  "Fellow 
  844.                 Sentient  Beings"   rather  than  "ALL"  (which includes "all 
  845.                 rocks"?  "all roads"?)--not  "everyone"  either--I mean  "all 
  846.                 sentient  beings everywhere".   Other things too,   like  the 
  847.                 greater emphasis on user-doable stuff, emphasis on exchanging 
  848.                 of ideas, etc. 
  849.  
  850.                 Now after 4 years,  10  releases, and 11  registrations,  I'm 
  851.                 going  to finally get myself a post-college career so  I  can 
  852.                 pay my bills. 
  853.  
  854.                 I  will  be programming this software about an hour each  day 
  855.                 (vs. the 5-12 I do now).  I am determined to keep it the most 
  856.                 powerful BBS around.   But too many of the "power tools" (VB, 
  857.                 3D graphics, TCP/IP, Windows, 386+ CPU, 8 MB RAM) cost money, 
  858.                 and I've been quite insane long enough avoiding a real job. 
  859.  
  860.                 My  ideal job is programming a GIS (Geographical  Information 
  861.                 System).   But there isn't much in the computer world I can't 
  862.                 do, so we'll see what I get. 
  863.                 
  864.  
  865.                 
  866. APPENDIX B
  867.  
  868. Format of       All lines below occupy a single line.
  869. JDRBBSxx.DEF
  870.                 This  file  may grow longer in the future,  but  the  entries 
  871.                 below will always occur in their current order and position. 
  872.  
  873.                 Contains          Of Type         And Is
  874.                 ─────────────────┬───────┬─────────────────────────────────────
  875.                 name             │A Z %1 │The caller's full name.
  876.                 comm port        │1 Z #48│Comm port being used, 0 = local user.
  877.                 went-to-door time│T Z %33│The current time (door was started).
  878.                 logon date       │D O %35│The caller's logon date.
  879.                 logon time       │T O %34│The caller's logon time.
  880.                 connect string   │B O %36│The caller's actual connect string.
  881.                                  │       │(eg. 9600+ HST, "CONSOLE" if local.)
  882.                                  │       │From the CONNECT's database, not what
  883.                                  │       │the modem received.
  884.                 Menu ID          │3 X %9 │Menu ID exited from.
  885.                 BBS name         │B O !60│BBS name, defined in LINES.TXT.
  886.                 BBS path         │C O %28│Path to the bbs's main files.
  887.                 exchange mins    │4 O #37│The exchange rate in minutes.
  888.                 exchange bytes   │6 O #38│The exchange rate in bytes.
  889.                 door-op's name   │A O %5 │The door-sysop's full name.
  890.                                  │       │As far as the door program is
  891.                                  │       │concerned, this is the sysop.
  892.                 log file         │C O %55│Log file for door program to add to.
  893.                 log leader       │A O %43│Sysop-only logging lines leader.
  894.                 type of logging  │1 O %46│(0 = none, 9 = everything you
  895.                                  │       │got--door authors to choose what
  896.                                  │       │1 to 8 breaks up as).
  897.                 trap chat file   │C O %56│File to trap any chat sessions to.
  898.                 trap all file    │C O %57│File to trap entire I/O session to.
  899.                 location         │A O %2 │The caller's city and state
  900.                 SL               │5 O #3 │The caller's security level value.
  901.                 bytes can DL     │7 O #14│Number of bytes caller can download.
  902.                 date last on     │D O %20│Date the caller last called.
  903.                 max door minutes │5 O #13│Maximum amount of time a caller may
  904.                                  │       │spend in the door (at this time).
  905.                 SL 255           │2 M #65│Caller's SL re-mapped to 0 - 255
  906.                                  │       │scale.  255 = Door-Op.
  907.                 phone number     │P O %16│Caller's home phone number.
  908.                 birth date       │D O %27│Caller's birthdate.  Given this, you
  909.                                  │       │can calculate their age if you want.
  910.                 uploads          │5 M #6 │Caller's number of uploaded files.
  911.                 downloads        │5 M #7 │Caller's number of downloaded files.
  912.                 upload bytes     │7 M #73│Caller's number of uploaded bytes.
  913.                 download bytes   │7 M #72│Caller's number of downloaded bytes.
  914.                 toggles          │5 M #49│16 bits, default is off, but when
  915.                                  │       │set: 1 = Sysop is on next
  916.                                  │       │     2 = Keep screen blank
  917.                                  │       │     3 = Trap chat to file
  918.                                  │       │     4 = Trap all to file
  919.                                  │       │     rest for the future
  920.                 minute-credits   │5 M #52│User's minute-credits.
  921.                 CPS rate         │3 Z #36│CPS rate for the CONNECTion type
  922.  
  923.                 This breaks down to:
  924.                   #01#48%33%35%34%36%09!60%28#37#38%05%55%43%46%56%57%01%02
  925.                   #03#14%20#13#65%16%27#06#07#73#72#49#52#36
  926.  
  927.  
  928. Types           (1)  This  is  a numeric line,  ranging in value from 0 to 9.  
  929.                      Upon exit, it contains only numbers (no spaces). 
  930.  
  931.                 (2)  This is a numeric line,  ranging in value from 1 to 255.  
  932.                      Upon exit, it contains only numbers (no spaces). 
  933.  
  934.                 (3)  This  is  a numeric line.   Ranging in value from  1  to 
  935.                      32767.  Upon exit, it contains only numbers (no spaces). 
  936.  
  937.                 (4)  This is a numeric line.   Containing values ranging from 
  938.                      0 to 32767. 
  939.  
  940.                 (5)  This is a numeric line.  Ranging in value from -32757 to 
  941.                      32767.   Upon exit, it contains only numbers (no spaces) 
  942.                      and maybe a -'ve symbol. 
  943.  
  944.                 (6)  This is a numeric line.   Containing values ranging from 
  945.                      0 to 2,100,000,000. 
  946.  
  947.                 (7)  This is a numeric line.   Containing values ranging from 
  948.                      -2,100,000,000 to 2,100,000,000. 
  949.  
  950.                 (A)  All  upper-cased  letters.   Assume  nothing  about  the 
  951.                      length, or the number of space-delineated words,  or the 
  952.                      characters making it up. 
  953.  
  954.                 (B)  This  is a "take as is"  line.   When you redisplay  the 
  955.                      information,  you shouldn't modify it.   Example:  don't 
  956.                      uppercase,   or strip out ANSI codes in  the  BBS  name.  
  957.                      Assume nothing about the length, or the number of space-
  958.                      delineated words, or the characters making it up. 
  959.  
  960.                 (C)  All upper-cased letters.   A single word,  no leading or 
  961.                      trailing spaces. If a path is specified,  then that path 
  962.                      exists.   If a file name is included, then that file may 
  963.                      or may not already exist. 
  964.  
  965.                 (D)  This is a date line, conforming to the format: mm/dd/yy. 
  966.  
  967.                 (M)  This  is  a modifiable numeric field.   This line,  upon 
  968.                      return, must contain either a "+"  or "-" and an amount, 
  969.                      if  the  entry is  to  be changed.   Thus,  if I  output 
  970.                      "32000",  and the door wants to add "5000"  to give  the 
  971.                      user a total of "37000",  then the door must modify this 
  972.                      line to contain "+5000".   If it should happen that a  -
  973.                      've value was  outputted,  and you wish to return with a 
  974.                      subtracted value, then a comparison will be done, if the 
  975.                      two  (starting and returning)  numbers aren't the  same, 
  976.                      then the subtraction is done. 
  977.  
  978.                      Thus:  Starting    Returning      Action
  979.                              1000         1000        ignored
  980.                              1000         1050        ignored
  981.                              1000         +100        1100 = 1000 + 100
  982.                              1000         -100        900 = 1000 - 100
  983.                              -100         -100        ignored
  984.                              -100         -105        -205 = -100 - 105
  985.                              -100          100        ignored
  986.                              -100          105        ignored
  987.                              -100         +100        0 = -100 + 100
  988.                              1000       1000 + 100    ignored
  989.                              1000        +1050A       1000 = 1000 + 0
  990.                              1000        +ABC55       1000 = 1000 + 55
  991.  
  992.                 (O)  This is an output only line.   Upon return,  the line is 
  993.                      ignored. 
  994.  
  995.                 (P)  This is a phone number line.   The form is:  (###)  ###-
  996.                      #### or ###-#### or blank.
  997.  
  998.                 (T)  This is a time field.  Of the form: hh:mm:ss
  999.  
  1000.                 (X)  Of the form ">xxx" where "x" can be any alpha-numeric
  1001.                      character.
  1002.  
  1003.                 (Z)  Don't modify this line at all.  This is a system read-in 
  1004.                      line. 
  1005.  
  1006.                 In sum:
  1007.                    Lines with a (O) aren't read back in.
  1008.                    Lines with a (Z) are read back in but you shouldn't change 
  1009.                    them. 
  1010.                    Lines with no (O) or (Z) are read back in, and any changes 
  1011.                    you made will be utilized. 
  1012.  
  1013. Log Leader      This is text (such as "+", "***",  or "HI YA!")  which should 
  1014.                 be attached to  the front of all sysop-only/non-user lines of 
  1015.                 text to be sent to the log file. 
  1016.                    
  1017.                 Examples:  "John Doe won the planet Taurus".
  1018.                            "John Doe won the lottery on mm/dd/yy."
  1019.                            "Lottery won by John Doe, given 25 extra mins."
  1020.                            "**John Doe played for 25 minutes."
  1021.                            "**John Doe attempted chat."
  1022.                            "**Loss of carrier."
  1023.                            Given a "log leader" line of "**".
  1024.  
  1025. Exchange Rates  The exchange rate, example: 10 minutes/1,000,000 bytes. 
  1026.                    
  1027.                 Thus the two fields aren't defined in terms of a single unit: 
  1028.                         exchange bytes <> 1 exchange min
  1029.                         exchange mins <> 1 exchange byte
  1030.                 but  rather  in a "together"  form:  x  exchange minutes =  y 
  1031.                 exchange bytes. Thus, 1 minute is equal to y\x bytes. 
  1032.  
  1033. Max Door        Maximum amount of time a user may spend in the door. 
  1034. Minutes
  1035.                 This should only used for non-file transfer door programs.
  1036.  
  1037.                 When a door program want's to know how much time to allow the 
  1038.                 user  access  to  the  door,  it should check  BOTH  Download 
  1039.                 Minutes and Max Door Minutes, and whichever is SMALLER. 
  1040.  
  1041.                 This field,  Max Door Minutes,  is a generalized maximum  for 
  1042.                 all users. But if a user has only 5 download minutes, then he 
  1043.                 can't use this door for more than 5 minutes (and  vice-versa, 
  1044.                 if  this  field has 32767  and the  user  has  180   download 
  1045.                 minutes, they can this door for 180 minutes). 
  1046.  
  1047.                 The  door  program should not subtract from this  field,   or 
  1048.                 Download Minutes, the time they spend in the door. 
  1049.  
  1050. Toggles         These are  things  your  door program may or may not support.  
  1051.                 All are toggles, which,  if the door program supports, should 
  1052.                 have some sort of command key so that the sysop can toggle it 
  1053.                 at any time.  If the door program doesn't support it, then it 
  1054.                 shouldn't change the values either. 
  1055.  
  1056.                 Bit 1 (Toggles and 1):  Sysop is on next.   After this caller 
  1057.                 logs off, the phone is taken off-hook so the sysop can logon. 
  1058.  
  1059.                 Bit 2 (Toggles and 2):  Keep screen blank.   Clear the  local 
  1060.                 (console) screen, don't write anything to it. 
  1061.  
  1062.                 Bit 3 (Toggles and 4): Trap chat to file.  If the program has 
  1063.                 chat ability, and this is set, then send the text to the chat 
  1064.                 trap file as well. 
  1065.  
  1066.                 Bit 4 (Toggles and 8):  Trap all to file.   If set,  and  the 
  1067.                 program supports it,  then all I/O should be sent to the trap 
  1068.                 file as well. 
  1069.  
  1070. SL 255          Most BBS's, and nearly all door-exit format's, rely on the SL 
  1071.                 being a value from 0 to 255. 
  1072.                 
  1073.                 The value here, in my door-exit format, represents the user's 
  1074.                 SL as mapped back to their defined SL ranges.   Thus 1 is the 
  1075.                 lowest.    If a sysop defined more than 255  SL ranges,  then 
  1076.                 this  could be larger than 255--but I put the probability  as 
  1077.                 extremely low.
  1078.  
  1079.                 Compare  user name against door-op name to determine  if  the 
  1080.                 current user is "sysop". 
  1081.  
  1082.                 If  the door program has some feature that allows movement of 
  1083.                 SL, then it should change this field. 
  1084.  
  1085.                 A  zero value here is possible,  but probably means something 
  1086.                 serious, like a bug or a locked out user. 
  1087.  
  1088. Minute-Credits  The  software  exchanges these at the exchange rate (example: 
  1089.                 10 minute-credits are equal to 1,000,000 can-download bytes). 
  1090.  
  1091.                 Door  authors  should  use this to provide  "awards"/gambling 
  1092.                 value/etc. for games.   However, keep it in perspective.  The 
  1093.                 number  ranges  from -x  to 32767  (where x is daily  granted 
  1094.                 minutes),   thus  you'll most likely want to use  this  as  a 
  1095.                 multiplier (example, each minute-credit = $100,000). 
  1096.  
  1097.                 Preferably,  it'd be best to make use of the sysop's exchange 
  1098.                 rate  setting to  define the proportion to use for each  unit 
  1099.                 (example,  sysop has 10  = 1,000,000  or 1 = 100,000  or .1 = 
  1100.                 10,000,   etc.   Another sysop has 10  =  2,000,000  or  1  = 
  1101.                 200,000,   etc.).   Preferably,  if the door program  uses  a 
  1102.                 configuration  file,  there should be an entry  for  exchange 
  1103.                 rate to use. 
  1104.  
  1105.                 A  user  isn't  allowed  to access the door if their  minute-
  1106.                 credits are -'ve and larger in size than the daily time limit 
  1107.                 (eg. -61 is larger than a daily time limit of 60 minutes). 
  1108.  
  1109. Misc.           The way I imagine it:
  1110.                 
  1111.                 A  door program loads in the above information.  It turns  on 
  1112.                 the fossil driver using the comm port provided.  It then does 
  1113.                 whatever it does, doing I/O through the fossil. 
  1114.  
  1115. Fossil stuff    Fossil  commands are called using interrupt (INT)  14H.   .DX 
  1116.                 containing the comm port (0 to n,  where COM1  is 0)  and .AX 
  1117.                 containing what we wish the fossil to do (see fossil's docs). 
  1118.  
  1119.                 In Basic, the call is of the form:
  1120.                   CALL Interrupt(&H14,InRegX,OutRegX) 
  1121.  
  1122.                 I've  reduced  it somewhat by using my own  calling  routine: 
  1123.                 FosIntAX 
  1124.  
  1125.                 The source code is included (assembly) and you could probably 
  1126.                 link it with your program. 
  1127.                 
  1128.                   Result% = FosIntAX(CommPort,DoWhat) is the call.
  1129.                 
  1130.                 CommPort is an integer ranging from 1 to n (1 = COM1, etc., 0 
  1131.                 means  "don't use fossil"  or local mode--no comm  I/O)   and 
  1132.                 DoWhat  is  an  integer  containing what  AX  would  normally 
  1133.                 contain. 
  1134.  
  1135.                 Below are FosIntAX call's I use to do various things:
  1136.  
  1137.                   Result% = FosIntAX(CommPort,&H1C00)
  1138.                   Turn  fossil  on/start  the fossil (do  this  at  start  of 
  1139.                   program). 
  1140.  
  1141.                   Carrier% = FosIntAX(CommPort,&H0300)
  1142.                   If BitTest(Carrier%,8) then carrier is detected still. (Bit 
  1143.                   7 on a 0..7 scale in AL is what BitTest(,8) checks). (Which 
  1144.                   is equivalent to a IF Carrier% AND 128 THEN...) 
  1145.  
  1146.                   Character% = FosIntAX(CommPort,&H2000) 
  1147.                   Get a character (input) from the port (if <> -1 then we got 
  1148.                   one--doesn't wait so you'll want to loop this). 
  1149.  
  1150.                   Result% = FosIntAX(CommPort,&H0A00)
  1151.                   Purge the input buffer.
  1152.  
  1153.                   Result% = FosIntAX(CommPort,&H0B00 + Character%)
  1154.                   Sends Character% (the ASCII value of the character to send) 
  1155.                   out the port. 
  1156.  
  1157.                   Result% = FosIntAX(CommPort,&H0900)
  1158.                   Purge the output buffer.
  1159.  
  1160.                   Result% = FosIntAX(CommPort,&H1D00)
  1161.                   Turn  fossil off/end the fossil (do this before ending  the 
  1162.                   program, although not required). 
  1163.  
  1164.                 Using FosIntAX makes life easy, because it properly handles a 
  1165.                 zero entry by not contacting the fossil driver.  In your door 
  1166.                 program,   you'll always want to  send out to both the screen 
  1167.                 (via an ANSI driver,  or even Basic's PRINT, for example) and 
  1168.                 the comm port (using a fossil). 
  1169.  
  1170.  
  1171. APPENDIX C
  1172.  
  1173. SFDOORS.DAT      1  User Number (* the record number in SFUSERS.DAT of the caller       *)
  1174.                  2  User Name   (* the full name of the caller                          *)
  1175.                  3  Password    (* the password of the caller                           *)
  1176.                  4  First Name  (* the first name of the caller                         *)
  1177.                  5  Baud Rate   (* baud rate of the caller - i.e. 2400 { 0 if local }   *)
  1178.                  6  Comm port   (* COMM port being used by SPITFIRE                     *)
  1179.                  7  Time Left   (* number of minutes the caller has left this log on    *)
  1180.                  8  Time        (* number seconds since midnight when entering the door *) 
  1181.                  9  Path        (* the path in which SPITFIRE.EXE resides {C:\SF\}      *)
  1182.                 10  Ansi_On     (* TRUE if caller is using ANSI else FALSE              *)
  1183.                 11  SecLevel    (* the security level of the caller                     *)
  1184.                 12  Uploads     (* the number of uploads the caller has made            *)
  1185.                 13  Downloads   (* the number of downloads the caller has made          *)
  1186.                 14  This Time   (* total number of minutes allowed for this call        *)
  1187.                 15  Time On     (* number of seconds since midnight when logged on      *)
  1188.                 16  Extra Time  (* number of seconds the caller has gained since log-on *)
  1189.                 17  Sysop Next  (* TRUE if Sysop next feature has been activated        *)
  1190.                 18  Front End   (* TRUE if SPITFIRE was booted from a front end program *)
  1191.                 19  No DTE Lock (* TRUE if configured for Software Data Flow Control    *)
  1192.                 20  MaxBaud     (* maximum baud of the system                           *)
  1193.                 21  ErrCorrect  (* TRUE if error correction connection                  *)
  1194.                 22  LastMConf   (* last message conference                              *)
  1195.                 23  LastFArea   (* last file area                                       *)
  1196.                 24  Node Number (* Node on which the caller is logged                   *)
  1197.                 25  DLs Per Day (* Number of files allowed to be downloaded per day     *)
  1198.                 26  DLs Today   (* Number of files the caller has downloaded this day   *)
  1199.                 27  Daily Bytes (* Number of downloadable bytes per day                 *)
  1200.                 28  Bytes Today (* Number of bytes the caller has downloaded this day   *)
  1201.                 29  TotalUK     (* Number of K bytes uploaded by the caller             *)
  1202.                 30  TotalDK     (* Number of K Bytes downloaded by the caller           *)
  1203.                 31  Phone #     (* The callers phone number                             *)
  1204.                 32  City/State  (* The callers city and state                           *)
  1205.  
  1206.                 How I interpret the SFDOORS.DAT "specs":
  1207.  
  1208.                  1  #1   User's record number
  1209.                  2  %1   User's full name
  1210.                  3  %4   User's full password
  1211.                  4  %3   User's first name--the word before the first space
  1212.                  5  #32  Baud user CONNECTed at (0 if local)
  1213.                  6  #48  Communications port being used
  1214.                  7  #13  Download/door minutes caller has left
  1215.                  8  #44  Seconds since midnight of current time
  1216.                  9  %29  Door-use directory
  1217.                 10  %25  "TRUE"
  1218.                 11  #65  User's security level (1 - 255) (not value) (255 = sysop)
  1219.                 12  #6   User's number of files uploaded
  1220.                 13  #7   User's number of files downloaded
  1221.                 14  #13  --same as 7--
  1222.                 15  #44  --same as 8--
  1223.                 16  #24  "0"
  1224.                 17  %24  "FALSE"
  1225.                 18  %24  "FALSE"
  1226.                 19  %70  "FALSE" if locked baud (toggle) is set, else "TRUE"
  1227.                 20  #5   Modem init baud rate (0 if local)
  1228.                 21  %25  "TRUE"
  1229.                 22  #24  "0"
  1230.                 23  #24  "0"
  1231.                 24  #71  Node number (1...n) of connection
  1232.                 25  #24  "0"
  1233.                 26  #24  "0"
  1234.                 27  #24  "0"
  1235.                 28  #24  "0"
  1236.                 29  #9   User's upload bytes total in K
  1237.                 30  #10  User's download bytes total in K
  1238.                 31  %16  User's home phone number
  1239.                 32  %2   User's location
  1240.  
  1241.                 This breaks down to:
  1242.                   #01%01%04%03#32#48#13#44%29%25#65#06#07#13#44#24%24%24%70
  1243.                   #05%25#24#24#71#24#24#24#24#09#10%16%02
  1244.  
  1245.  
  1246. APPENDIX D
  1247.  
  1248. DORINFOx.DEF     1  System Name (as defined in CED)
  1249.                  2  Sysop's First Name (as defined in UED record #1)
  1250.                  3  Sysop's Last Name (as defined in UED record #1)
  1251.                  4  COM Port (COM1 or COM2, COM0 for local)
  1252.                  5  Baud Rate, Parity, Data Bits, Stop Bits
  1253.                  6  0
  1254.                  7  User's First Name
  1255.                  8  User's Last Name
  1256.                  9  User's City and State
  1257.                 10  Graphics Mode (0=OFF, 1=ON)
  1258.                 11  Privilege Level (0-255)
  1259.                 12  Time Left in Minutes
  1260.  
  1261.                  1  The name of the RBBS-PC system
  1262.                  2  The SysOp's first name
  1263.                  3  The SysOp's last name
  1264.                  4  The communications port being used
  1265.                  5  The baud rate and parity with which the caller logged on, 
  1266.                     and  the  baud rate at which RBBS-PC is connected to  the 
  1267.                     modem 
  1268.                  6  The network type (if any) RBBS-PC is running in
  1269.                  7  The caller's first name
  1270.                  8  The caller's last name
  1271.                  9  The city and state the caller is from
  1272.                 10  The caller's graphics preferences
  1273.                 11  The caller's security level
  1274.                 12  The caller's time remaining in the current session
  1275.                 13  Whether fossil driver is used (-1 = yes, 0 = no)
  1276.  
  1277.                 The RBBS source code suggests:
  1278.                   line 5 is "19200 BAUD,N,8,1",
  1279.                   lines 8 and 9 is "SYSOP" and "", respectively,  if the user 
  1280.                   is  the sysop.   Not supported because door programs  don't 
  1281.                   support   it   (seeing  SYSOP  as  the  name   isn't   very 
  1282.                   participatory). 
  1283.  
  1284.                 How I interpret the DORINFOx.DEF "specs":
  1285.  
  1286.                  1  !60  BBS's name
  1287.                  2  %61  Door-Op's first name
  1288.                  3  %62  Door-Op's last name
  1289.                  4  %63  "COMx" where x is the comm port number (COM0 for local)
  1290.                  5  %10  "xxxxx BAUD,N,8,1" where xxxxx is the modem init baud rate (0 for local)
  1291.                  6  #24  "0"
  1292.                  7  %3   User's first name
  1293.                  8  %8   User's last name
  1294.                  9  %2   User's city and state
  1295.                 10  #25  "1"
  1296.                 11  #65  User's security level (not value)(1-255)(255 if Door-Op)
  1297.                 12  #13  Download/door minutes caller has left
  1298.                 13  #30  "-1"
  1299.  
  1300.                 For line 10  (color preference) there is a difference between 
  1301.                 RBBS  and QuickBBS.   When asked to choose which DORINFOx.DEF 
  1302.                 file you want, you want the QuickBBS version. 
  1303.  
  1304.                 This breaks down to:
  1305.                   !60%61%62%63%10#24%03%08%02#25#65#13#30
  1306.  
  1307.  
  1308. APPENDIX E
  1309.  
  1310. CHAIN.TXT        1  User number
  1311.                  2  Users alias
  1312.                  3  Users real name
  1313.                  4  Amateur radio callsign
  1314.                  5  Age
  1315.                  6  Sex ("M" or "F")
  1316.                  7  Gold (game credits)
  1317.                  8  Last date on BBS
  1318.                  9  Width of screen
  1319.                 10  Lines in screen
  1320.                 11  Security level (0 - 255, sysop = 255)
  1321.                 12  SysOp flag (1 if sysop, else 0)
  1322.                 13  Co-SysOp flag (1 if co-sysop, else 0)
  1323.                 14  ANSI graphics flag (1 if ansi)
  1324.                 15  Remote user flag (0 if local, else 1)
  1325.                 16  Time remaining in seconds (float) (use .0 at end)
  1326.                 17  General text file directory
  1327.                 18  Data file directory
  1328.                 19  Path/Filename for text sysop log
  1329.                 20  Current baud rate (KB = local)
  1330.                 21  Comm port number
  1331.  
  1332.                 Sourced from Telegard version 2.5i's source:
  1333.  
  1334.                 20  "0" instead of "KB"
  1335.                 22  BBS name
  1336.                 23  Sysop's full name
  1337.                 24  Seconds since midnight
  1338.                 25  TIme used ("0")
  1339.                 26  Upload K
  1340.                 27  Uploads
  1341.                 28  Download K
  1342.                 29  Downloads
  1343.                 30  Comm port settings "8N1"
  1344.  
  1345.                 How I interpret the CHAIN.TXT "specs":
  1346.  
  1347.                  1  #1   User's record number
  1348.                  2  %1   User's full name
  1349.                  3  %1   --same as 2--
  1350.                  4  %30  ""
  1351.                  5  #50  User's age
  1352.                  6  %51  "M" or "F" depending on user's sex type
  1353.                  7  #52  User's minute-credits
  1354.                  8  %20  "mm\dd\yy" last date user was on.
  1355.                  9  #53  "80"
  1356.                 10  #18  "24"
  1357.                 11  #65  User's security level (1 to 255) (not value) (255 = door-sysop)
  1358.                 12  #66  "1" if door-sysop, else "0"
  1359.                 13  #58  "1" if co-sysop, else "0"
  1360.                 14  #25  "1"
  1361.                 15  #4   "0" if local, else "1"
  1362.                 16  %12  Time left in seconds (add a ".0" to the end)
  1363.                 17  %29  Door use directory.
  1364.                 18  %29  --same as 17--
  1365.                 19  %55  Callers log pathname
  1366.                 20  %7   "KB" if local, else CONNECT baud rate
  1367.                 21  #48  Comm port (0 if local)
  1368.                 22  !60  BBS Name
  1369.                 23  %5   Door-Sysop's full name
  1370.                 24  #44  Seconds since midnight
  1371.                 25  #24  "0"
  1372.                 26  #9   User's upload bytes total in K
  1373.                 27  #6   User's upload files total
  1374.                 28  #10  User's download bytes total in K
  1375.                 29  #7   User's download files total
  1376.                 30  %67  "8N1"
  1377.  
  1378.                 This breaks down to:
  1379.                   #01%01%01%30#50%51#52%20#53#18#65#66#58#25#04%12%29%29%55
  1380.                   %07#48!60%05#44#24#09#06#10#07%67
  1381.  
  1382.  
  1383. APPENDIX F
  1384.  
  1385. DOOR.SYS        COM1:             <-- Comm Port - COM0: = LOCAL MODE
  1386.                 2400              <-- Baud Rate - 300 to 38400
  1387.                 8                 <-- Parity - 7 or 8
  1388.                 1                 <-- Node Number - 1 to 99
  1389.                 19200             <-- DTE Rate. Actual BPS rate to use. (kg) 
  1390.                 Y                 <-- Screen Display - Y=On  N=Off
  1391.                 Y                 <-- Printer Toggle - Y=On  N=Off
  1392.                 Y                 <-- Page Bell      - Y=On  N=Off
  1393.                 Y                 <-- Caller Alarm   - Y=On  N=Off
  1394.                 Rick Greer        <-- User Full Name
  1395.                 Lewisville, Tx.   <-- Calling From
  1396.                 214 221-7814      <-- Home Phone
  1397.                 214 221-7814      <-- Work/Data Phone
  1398.                 PASSWORD          <-- Password
  1399.                 110               <-- Security Level
  1400.                 1456              <-- Total Times On
  1401.                 03/14/88          <-- Last Date Called
  1402.                 7560              <-- Seconds Remaining THIS call
  1403.                 126               <-- Minutes Remaining THIS call
  1404.                 GR                <-- Graphics Mode - GR=Graph, NG=Non-Graph
  1405.                 23                <-- Page Length
  1406.                 Y                 <-- User Mode - Y = Expert, N = Novice
  1407.                 1,2,3,4,5,6,7     <-- Conferences/Forums Registered In  (ABCDEFG)
  1408.                 7                 <-- Conference Exited To DOOR From    (G)
  1409.                 01/01/99          <-- User Expiration Date              (mm/dd/yy)
  1410.                 1                 <-- User File's Record Number
  1411.                 Y                 <-- Default Protocol - X, C, Y, G, I, N, Etc.
  1412.                 0                 <-- Total Uploads
  1413.                 0                 <-- Total Downloads
  1414.                 0                 <-- Daily Download "K" Total
  1415.                 999999            <-- Daily Download Max. "K" Limit
  1416.  
  1417.                 Up until this was the old gap format.
  1418.  
  1419.                 10/22/88          <-- Caller's Birthdate                              (kg)
  1420.                 G:\GAP\MAIN       <-- Path to the MAIN directory (where User File is) (kg)
  1421.                 G:\GAP\GEN        <-- Path to the GEN directory                       (kg)
  1422.                 Michael           <-- Sysop's Name (name BBS refers to Sysop as)      (kg)
  1423.                 Stud              <-- Alias name                                      (rc)
  1424.                 00:05             <-- Event time                        (hh:mm)       (rc)
  1425.                 Y                 <-- If its an error correcting connection (Y/N)     (rc)
  1426.                 N                 <-- ANSI supported & caller using NG mode (Y/N)     (rc)
  1427.                 Y                 <-- Use Record Locking                    (Y/N)     (rc)
  1428.                 14                <-- BBS Default Color (Standard IBM color code, ie, 1-15) (rc)
  1429.                 10                <-- Time Credits In Minutes (positive number)       (rc)
  1430.                 07/07/90          <-- Last New Files Scan Date          (mm/dd/yy)    (rc)
  1431.                 14:32             <-- Time of This Call                 (hh:mm)       (rc)
  1432.                 07:30             <-- Time of Last Call                 (hh:mm)       (rc)
  1433.                 6                 <-- Maximum daily files available                   (rc)
  1434.                 3                 <-- Files d/led so far today                        (rc)
  1435.                 23456             <-- Total "K" Bytes Uploaded                        (rc)
  1436.                 76329             <-- Total "K" Bytes Downloaded                      (rc)
  1437.                 A File Sucker     <-- User Comment                                    (rc)
  1438.                 10                <-- Total Doors Opened                              (rc)
  1439.                 10283             <-- Total Messages Left                             (rc)
  1440.  
  1441.                 How I interpret the DOOR.SYS "specs":
  1442.  
  1443.                  1  %48  "COMx:" where x is 0 if local, else the comm port
  1444.                  2  #5   Baud initiated modem at (0 if local)
  1445.                  3  #23  "8"
  1446.                  4  #71  Node number
  1447.                  5  #5   --same as 2--
  1448.                  6  %21  "Y" to send text to screen also, else "N"
  1449.                  7  %22  "N"
  1450.                  8  %22  "N"
  1451.                  9  %22  "N"
  1452.                 10  %1   User's full name
  1453.                 11  %2   User's full address
  1454.                 12  %16  User's home phone number
  1455.                 13  %17  User's BBS phone number
  1456.                 14  %4   User's password
  1457.                 15  #65  User's security level (0 to 255) (not value) (255 = sysop)
  1458.                 16  #8   User's total number of logons
  1459.                 17  %20  Last date user called (mm/dd/yy)
  1460.                 18  #12  Download seconds remaining this call
  1461.                 19  #13  Download minutes remaining this call
  1462.                 20  %23  "GR"
  1463.                 21  #18  "24"
  1464.                 22  %22  "N"
  1465.                 23  %30  ""
  1466.                 24  %30  ""
  1467.                 25  %26  Subscription expiration date (mm/dd/yy)
  1468.                 26  #1   User's record number
  1469.                 27  %14  User's protocol of choice
  1470.                 28  #6   User's total uploaded files
  1471.                 29  #7   User's total downloaded files
  1472.                 30  #24  "0"
  1473.                 31  #24  "0"
  1474.                 32  %27  User's birth date
  1475.                 33  %29  Path for door use
  1476.                 34  %29  --same as 33--
  1477.                 35  %61  Sysop's first name
  1478.                 36  %61  --same as 35--
  1479.                 37  %40  "00:00"
  1480.                 38  %45  "Y"
  1481.                 39  %22  "N"
  1482.                 40  %45  "Y"
  1483.                 41  #2   "15"
  1484.                 42  #24  "0"
  1485.                 43  %20  --same as 17--
  1486.                 44  %44  Time of user connection  (HH:MM)
  1487.                 45  %44  --same as 44--
  1488.                 46  #53  "80" (only because it's a number I use elsewhere)
  1489.                 47  #24  "0"
  1490.                 48  #9   Total bytes uploaded in K
  1491.                 49  #10  Total bytes downloaded in K
  1492.                 50  %19  User's comment
  1493.                 51  #31  Total number of doors opened
  1494.                 52  #11  Total number of messages posted
  1495.  
  1496.                 This breaks down to:
  1497.                   %48#05#23#71#05%21%22%22%22%01%02%16%17%04#65#08%20#12#13
  1498.                   %23#18%22%30%30%26#01%14#06#07#24#24%27%29%29%61%61%40%45
  1499.                   %22%45#02#24%20%44%44#53#24#09#10%19#31#11
  1500.  
  1501.  
  1502. APPENDIX G
  1503.  
  1504. PCBOARD.SYS     Length Offset  Purpose
  1505. version 14.x    ------ ------- -----------------------------------------------------
  1506.                    2    1-  2 Display On/Off ("-1"=on, " 0"=off)
  1507.                    2    3-  4 Printer On/Off ("-1"=on, " 0"=off)
  1508.                    2    5-  6 Page Bell On/Off ("-1"=on, " 0"=off)
  1509.                    2    7-  8 Caller Alarm On/Off ("-1"=on, " 0"=off)
  1510.                    1    9-  9 Sysop Flag (N, X or Space)
  1511.                    2   10- 11 Error Corrected Connect ("-1"=yes, " 0"=no)
  1512.                    1   12- 12 Graphics Mode of Caller ("Y", "N", "7")
  1513.                    1   13- 13 Node CHAT Status ("U" or "A")
  1514.                    5   14- 18 BPS Rate to Open Modem Port At
  1515.                    5   19- 23 BPS CONNECT rate of caller or "Local"
  1516.                    2   24- 25 User's Database Record Number MKI$
  1517.                   15   26- 40 User's First Name Padded to 15 Spaces
  1518.                   12   41- 52 Password of Caller padded to 12 spaces
  1519.                    2   53- 54 Time User Logged on in Minutes Format MKI$
  1520.                    2   55- 56 Time used so far that day (0 or a -xx number) MKI$
  1521.                    5   57- 61 Time Caller Logged On (hh:mm format)
  1522.                    2   62- 63 Allowed time of user in minutes from PWRD file MKI$
  1523.                    2   64- 65 Allowed D/L Bytes from the PWRD file MKI$
  1524.                    1   66- 66 Area of the board user exited from
  1525.                    5   67- 71 Areas of the board the user has been in
  1526.                    5   72- 76 Area the user has done a "Y" command on
  1527.                    2   77- 78 Highest Area "Add Time" so far in minutes MKI$
  1528.                    2   79- 80 Upload/Sysop CHAT time credit so far that call in
  1529.                    4   81- 84 Language being used ("    ", "FRE", etc.)
  1530.                   25   85-109 Complete Name of caller (first & Last)
  1531.                    2  110-111 Calculated minutes remaining MKI$
  1532.                    1  112-112 The Node number of that caller
  1533.                    5  113-117 The scheduled event time in hh:mm format
  1534.                    2  118-119 Is the event time active?  ("-1"=yes, " 0"=no)
  1535.                    2  120-121 Slide the event? ("-1"=yes, " 0"=no)
  1536.                    4  122-125 "Memorized" message number MKS$
  1537.                    1  126-126 COM Port # (0-8)
  1538.                    2  127-128 "  " future
  1539.                  ---  ------- -----------------------------------------------------
  1540.                  128    1-128
  1541.  
  1542.                 How I interpret the PCBOARD.SYS "specs":
  1543.  
  1544.                     TYPE PCBoard14
  1545.                 *21   BlankScr   AS STRING * 2    '"-1" display on, " 0" display off (blank screen)
  1546.                 --    Misc1      AS STRING * 11   '" 0 0 0 -1YA"
  1547.                 *5    BPSRate    AS STRING * 5    'Initial modem baud rate ("    0"/"19200"/" 2400"/etc.)
  1548.                 *32   Connect    AS STRING * 5    'Caller's CONNECT rate.("LOCAL"/"19200"/" 2400"/etc.)
  1549.                 *1    RecNum     AS INTEGER       'User's record number.
  1550.                 *3    FirstName  AS STRING * 15   'User's first name.
  1551.                 *4    Password   AS STRING * 12   'User's password.
  1552.                 *44   LogonMins  AS INTEGER       'Minutes since midnight.
  1553.                 --    TimeUsed   AS INTEGER       'Zero.
  1554.                 --    LogonTime  AS STRING * 5    'HH:MM of current time.
  1555.                 *13   MinsAvail  AS INTEGER       'Download/door minutes left today.
  1556.                 --    Misc3      AS STRING * 21   'All blank.
  1557.                 --    UserName   AS STRING * 25   'User's full name.
  1558.                 --    MinsAvail2 AS INTEGER       'Same as MinsAvail.
  1559.                 *71   Node       AS STRING * 1    'Node number. ("1" to "9")
  1560.                 --    Misc4      AS STRING * 13   '"00:00 0-1    "
  1561.                 *48   CommPort   AS STRING * 1    'Comm Port.
  1562.                 --    Misc6      AS STRING * 2    'All blank.
  1563.                     END TYPE
  1564.  
  1565.                 This breaks down to:
  1566.                   *21*05*32*01*03*04*44*13*71*48
  1567.  
  1568.  
  1569. APPENDIX H
  1570.  
  1571. PCBOARD.SYS         Field
  1572. version 12.x        Length     Format     Contents
  1573.                     ------     ------     --------
  1574.                  1      2       Ascii     Display on/off ("-1", " 0")
  1575.                  2      2       Ascii     Printer on/off ("-1", " 0")
  1576.                  3      2       Ascii     Page bell on/off ("-1", " 0")
  1577.                  4      2       Ascii     Caller page on/off ("-1", " 0")
  1578.                  5      2       Ascii     Sysop next on ("-1", " 0")
  1579.                  6      4       Ascii     Current baud rate (" 300", "1200", "loca", etc.)
  1580.                  7     27       Ascii     User's name (padded with spaces)
  1581.                  8     15       Ascii     User's first name (padded with spaces)
  1582.                  9      2       Ascii     ANSI status ("-1", " 0")
  1583.                 10     12       Ascii     Password (always blank; see note below)
  1584.                 11      2       MKI$      User's record number
  1585.                 12      4       MKS$      Time user logged in, in seconds from midnight (LONG)
  1586.                 13      4       MKS$      User's time limit, in seconds (LONG)
  1587.                 14      4       MKS$      Current time, in seconds from midnight (LONG)
  1588.                 15      5       Ascii     Time user logged in, as HH:MM
  1589.                 16      2       MKI$      Current subboard number
  1590.                 17     20       ---       Unused (padded with binary zeros)(conference flags)(2 INT's?)
  1591.                 18      8       MKD$      Download limit in Kbytes (CHAR * 8)
  1592.                 19      2       ---       Unused (padded with binary zeros)(upload time credit)
  1593.                 20      4       Ascii     Language version (not used; padded with spaces)
  1594.                 21      2       Ascii     Error correcting modem ("-1", " 0")
  1595.                 22      1       Ascii     Chat Status (always "A" in single-user systems)
  1596.  
  1597.                 Notes:
  1598.  
  1599.                 Fields indicated as MKI$,  MKS$,  and MKD$  correspond to the 
  1600.                 integer, real number, and double-precision real number format 
  1601.                 as  found in Microsoft BASIC.   Since PCBOARD is  written  in 
  1602.                 BASIC,   it uses BASIC real number formats;  if you  want  to 
  1603.                 access these values from a different language,  you will have 
  1604.                 to  perform a conversion.   The BASIC real number  format  is 
  1605.                 given in Microsoft's reference manual. 
  1606.  
  1607.                 How I interpret the PCBOARD.SYS "specs":
  1608.  
  1609.                     TYPE PCBoard12
  1610.                 *21   BlankScr   AS STRING * 2    '"-1" display on, " 0" display off (blank screen)
  1611.                 *1    Misc1      AS STRING * 8    '" 0 0 0 0"
  1612.                 *32   BPSRate    AS STRING * 4    'Initial baud rate. ("1920" or "2400" or "Loca")
  1613.                 --    UserName   AS STRING * 27   'User's full name.
  1614.                 *3    FirstName  AS STRING * 15   'User's first name.
  1615.                 --    Misc2      AS STRING * 2    '"-1"
  1616.                 *4    Password   AS STRING * 12   'User's password.
  1617.                 --    RecNum     AS INTEGER       'User's record number.
  1618.                 *44   LogonSecs  AS LONG          'Seconds since midnight.
  1619.                 *12   SecsAvail  AS LONG          'Download/door seconds left.
  1620.                 --    LogonSecs2 AS LONG          'Same as LogonSecs.
  1621.                 --    LogonTime  AS STRING * 5    'HH:MM of current time.
  1622.                 --    Misc3      AS STRING * 39   'All blank with "-1A" at the end.
  1623.                     END TYPE
  1624.  
  1625.                 This breaks down to:
  1626.                   *21*01*32*03*04*44*12
  1627.  
  1628.                 Sourced from WildFire:
  1629.  
  1630.                      Doors for PCBoard V 12.x  REQUIRE the presence of a file 
  1631.                      called  PCBOARD.DAT  in your SF directory.  This file is 
  1632.                      NOT built by WF because it  is a static file and is only 
  1633.                      created once and then left alone.   It holds the comport 
  1634.                      number  the system is running on and 12.x doors open  it 
  1635.                      to find the port.   If you don't have a PCBOARD.DAT  un-
  1636.                      pack the one that came with the Wildfire package, follow 
  1637.                      the  short  doc file and configure it for  your  system. 
  1638.                      Then place it in your SF directory and forget about it. 
  1639.  
  1640.                 If this is true, then I'll make a PCBOARD.DAT file also (I'll 
  1641.                 use a BLOCKS.TXT block to store it). 
  1642.  
  1643.                 In general, this door-exit type needs more testing by me.
  1644.  
  1645. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  1646.  
  1647. *** PCBoard Version 12.0 data file *** (PCBOARD.DAT)
  1648. Sysop,WILDCAT,-1,0,0,0,0,0,0,0,0,0,0,0,0,,,,,,,,,,,,,,,,,,,,,,,,,30,,,COM1:,9600,-1,00:01,24:00,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,0,02:30,0,00,37,0,0,0
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.  
  1655.  
  1656.  
  1657.  
  1658.  
  1659. Be sure to call THE WALL whenever you need a Live Program
  1660. 714-775-4974
  1661. 1,-1,32,-1,-1,0,0,0,0,8,0,0,0,-1,0,0,0,0,100,0,0,20,0,0
  1662.  
  1663. |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  1664.  
  1665.  
  1666.  
  1667.  
  1668. APPENDIX I
  1669.  
  1670. CALLINFO.BBS    Line  1 --> User name
  1671.                 Line  2 --> baud rate 0=2400,1=300,2=1200,3=9600
  1672.                 Line  3 --> User city and state
  1673.                 Line  4 --> User Access level
  1674.                 Line  5 --> Logon time left in minutes
  1675.                 Line  6 --> Either COLOR or MONO user setting
  1676.                 Line  7 --> User password
  1677.                 Line  8 --> User Record number
  1678.                 Line  9 --> Total minutes lon on bbs
  1679.                 Line 10 --> Time entered door hh:mm
  1680.                 Line 11 --> Time called bbs hh:mm
  1681.                 Line 12 --> User confernces join
  1682.                 Line 13 --> User daily d/l total
  1683.                 Line 14 --> User max d/l per day
  1684.                 Line 15 --> User daily d/l no of bytes in k
  1685.                 Line 16 --> User max d/l in k
  1686.                 Line 17 --> User phone number
  1687.                 Line 18 --> Time / date last call
  1688.                 Line 19 --> Either NOVICE or EXPERT - user mode
  1689.                 Line 20 --> N=none, X=Xmodem, C=Xmodem/crc etc
  1690.                 Line 21 --> Last new file search MM/DD/YY
  1691.                 Line 22 --> User total number of call
  1692.                 Line 23 --> User line per page or screen
  1693.                 Line 24 --> Last msg no read
  1694.                 Line 25 --> User total u/l since first log-on
  1695.                 Line 26 --> User total d/l since first log-on
  1696.                 Line 27 --> Either 7  {Databits} or 8  {Databits}
  1697.                 Line 28 --> Either LOCAL or REMOTE
  1698.  
  1699.                  2  "4" = 19200
  1700.                 29  Comm port (1, 2, 3, etc.)
  1701.                 30  Date of birth (mm/dd/yy)
  1702.  
  1703.                  2  "5" = Local
  1704.                 11  "hh:mm dd/mm/yy" format
  1705.                 18  "dd/mm/yy hh:mm" format
  1706.                 29  "COMx"
  1707.                 30  --same as 2--
  1708.                 31  "FALSE"
  1709.                 32  "Normal Connection"
  1710.                 33  "dd/mm/yy dd:mm" format (subscription ends date?)
  1711.                 34  task number
  1712.                 35  node number
  1713.                 'This third collection is not yet implemented until I have
  1714.                 'a chance to double check them.
  1715.  
  1716.                 How I interpret the PCBOARD.SYS "specs":
  1717.  
  1718.                  1  %1   User's full name
  1719.                  2  #39  "0"=2400, "1"=300, "2"=1200, "3"=9600, "4"=19200
  1720.                  3  %2   User's city and state
  1721.                  4  #65  User's security level (1-255, 255 = sysop)(not value)
  1722.                  5  #13  Download minutes remaining
  1723.                  6  %11  "COLOR"
  1724.                  7  %4   User's password
  1725.                  8  #1   User's record number
  1726.                  9  #24  "0"
  1727.                 10  %44  Current time (HH:MM)
  1728.                 11  %44  --same as 10--
  1729.                 12  %30  ""
  1730.                 13  #24  "0"
  1731.                 14  #24  "0"
  1732.                 15  #24  "0"
  1733.                 16  #24  "0"
  1734.                 17  %16  User's home phone number
  1735.                 18  %18  Current time and last date on in "xx:xx:xx xx/xx/xx" format
  1736.                 19  %6   "NOVICE"
  1737.                 20  %14  Single character of user's protocol
  1738.                 21  %20  Date user last called (MM/DD/YY)
  1739.                 22  #8   Total number of logons for the user
  1740.                 23  #18  "24"
  1741.                 24  #24  "0"
  1742.                 25  #6   User's total file uploads
  1743.                 26  #7   User's total file downloads
  1744.                 27  #23  "8"
  1745.                 28  %39  "LOCAL" if local, else "REMOTE"
  1746.                 29  #48  Comm port (1, 2, 3, etc.)(0 = local)
  1747.                 30  %27  User's date of birth (mm/dd/yy)
  1748.  
  1749.                 This breaks down to:
  1750.                   %01#39%02#65#13%11%04#01#24%44%44%30#24#24#24#24%16%18%06
  1751.                   %14%20#08#18#24#06#07#23%39#48%27
  1752.  
  1753.  
  1754. APPENDIX J
  1755.  
  1756. FidoNet
  1757.  
  1758. FTSC Document  Contents                              Juggernaut status
  1759. =============  ====================================  ==========================
  1760. FTS-0001 015
  1761. FTS-0002       ──                                    *Obsoleted by FTS-0005*
  1762. FTS-0003       ──                                    *Obsoleted by FTS-0006*
  1763. FTS-0004 001   EchoMail Specification                Complete(d) Support
  1764. FTS-0005 001   The Distribution Nodelist             Nothing To Implement
  1765. FTS-0006 002
  1766. FTS-0007 003   SEAlink protocol                      NOT SUPPORTED
  1767. FTS-0008 003   "Bark" type FidoNet file requests     NOT SUPPORTED
  1768. FTS-0009 001   ^aMSGID: / ^aREPLY:                   Complete(d) Support
  1769.  
  1770. FTS-LIST 038
  1771. FTSCLIST 048   Directory of all FTSC files           Nothing To Implement
  1772. FTSCPROD 042   FTSC product code list                Nothing To Implement
  1773.  
  1774. FSC-0001       ──                                    *Obsoleted by FTS-0001*
  1775. FSC-0002       ──                                    *Obsoleted by FTS-0005*
  1776. FSC-0003 001   FidoNet Route Files (ROUTE.CTL)       NOT SUPPORTED
  1777. FSC-0004 001
  1778. FSC-0005 001   OPUS-CBCS Matrix Password Methods     NOT SUPPORTED
  1779. FSC-0006       ──                                    *Obsoleted by FTS-0006*
  1780. FSC-0007 002   RFC822-Style Message Format           NOT SUPPORTED(*)
  1781. FSC-0008       ──                                    *Obsoleted by FSC-0015*
  1782. FSC-0009 001   Nodelist (comment) -> capabilities    NOT SUPPORTED
  1783. FSC-0010 001   RESYNC--sealink protocol enhancement  NOT SUPPORTED
  1784. FSC-0011 001   Alternative FTS-0001 state tables     NOT SUPPORTED
  1785. FSC-0012       ──                                    *Obsoleted by FTS-0004*
  1786. FSC-0013       ──                                    *Obsoleted by FTS-0008*
  1787. FSC-0014 001   TYPE-3: A Bundle Proposal             NOT SUPPORTED
  1788. FSC-0015 001   FOSSIL Function Chart,  Version 5     Complete(d) Support
  1789. FSC-0016 001   FidoNet mail session startup          NOT SUPPORTED
  1790. FSC-0017 001   Document Naming                       Nothing To Implement
  1791. FSC-0018       ──                                    *Obsoleted by FTS-LIST*
  1792. FSC-0019 001   SEALINK File Transfer Protocol        NOT SUPPORTED
  1793. FSC-0020 001   Alternate Nodelist Flag Proposal      NOT SUPPORTED
  1794. FSC-0021 001   VFOSSIL - OS/2-Subset Video FOSSIL    NOT SUPPORTED
  1795. FSC-0022 002
  1796. FSC-0023 001
  1797. FSC-0024 001   Proposal for a Type-3 Mail Bundle     NOT SUPPORTED
  1798. FSC-0025 001   AVATAR                                Complete(d) Support
  1799. FSC-0026       ──                                    *Obsoleted by FTS-LIST*
  1800. FSC-0027       ──                                    *Obsoleted by FTS-0005*
  1801. FSC-0028 001   Schematic of .Tic file                NOT SUPPORTED
  1802. FSC-0029 ???
  1803. FSC-0030 001   MESSAGE-ID / IN-REPLY-TO              NOT SUPPORTED(*)
  1804. FSC-0031 001   ^aEID:                                NOT SUPPORTED
  1805. FSC-0032 001   Uniform EchoMail Quoting Style        NOT SUPPORTED
  1806. FSC-0033 001   ^aFMSGID: / ^aFREPLY:                 NOT SUPPORTED
  1807. FSC-0034 002   Gateways to and from FidoNet          Nothing To Implement
  1808. FSC-0035 001   ^aREPLYADDR / ^aREPLYTO               NOT SUPPORTED
  1809. FSC-0036 001   GROUP MAIL SPECIFICATIONS / ^aAREA:   NOT SUPPORTED
  1810. FSC-0037 001   Extending Avatar (AVT/0)              NOT SUPPORTED
  1811. FSC-0038 001   ^aDOMAIN                              NOT SUPPORTED
  1812. FSC-0039 004   A Type-2 Packet Extension Proposal    NOT SUPPORTED
  1813. FSC-0040 001   Extended Modem Handling               Nothing To Implement
  1814. FSC-0041       ──                                    *Obsoleted by FTS-0009*
  1815. FSC-0042 001   Gateway Agreement/WWIVnet             Nothing To Implement
  1816. FSC-0043 002   Hints on Recognizing Control Lines    Nothing To Implement
  1817. FSC-0044 002   ^aPTH: / FtnPth:                      NOT SUPPORTED
  1818. FSC-0045 001   A New Packet Header Format            NOT SUPPORTED
  1819. FSC-0046 002   ^aPID:                                Complete(d) Support
  1820. FSC-0047 001   ^aSPLIT:                              NOT SUPPORTED
  1821. FSC-0048 001   A Proposed Type-2 Packet Extension    NOT SUPPORTED
  1822. FSC-0049 001   Passing Domain Information            NOT SUPPORTED(*)
  1823. FSC-0050 001   ^aCHARSET:                            NOT SUPPORTED
  1824. FSC-0051 001   Transferring Special Characters       NOT SUPPORTED
  1825. FSC-0052 001   ^aZPTH:                               NOT SUPPORTED
  1826. FSC-0053 ???
  1827. FSC-0054 ???
  1828. FSC-0055 ???
  1829. FSC-0056 001   EMSI/IEMSI Protocol Definitions       Complete(d) Support
  1830. FSC-0057 002   Echo Area Managers / ^aRESCANNED      NOT SUPPORTED
  1831. FSC-0058 001   ^aDEST / ^aORIG / ^aROUTE             NOT SUPPORTED
  1832. (*) not supported in Fido messages, but may support in Internet messages.
  1833.  
  1834. Detailia (or "not 100%" supported):
  1835.  
  1836. FSC-0015 001   FOSSIL Function Chart,  Version 5     Complete(d) Support
  1837.  
  1838.     I use X00's implemention of these specs.   Which include  additional 
  1839.     and  enhanced functions.   A  fossil driver that conformed strictly, 
  1840.     and only to these FTSC specs will not work with Juggernaut. 
  1841.  
  1842. FTS-0009 001   ^aMSGID: / ^aREPLY:                   Complete(d) Support
  1843.  
  1844.     The  oddball double-quotes stuff isn't supported.   Instead I assume 
  1845.     the first "word" (text delinated by spaces) is the address. 
  1846.  
  1847. FSC-0056 001   EMSI/IEMSI Protocol Definitions       Complete(d) Support
  1848.  
  1849.     IEMSI, EMSI_HBT, EMSI_CLI are not supported.   The EMSI_addon fields 
  1850.     are  ignored  (which  includes IDENT for nodelist info and  TRX  for 
  1851.     transaction  number).    Link codes are ignored,  8N1   is  assumed. 
  1852.     Calling  system  options are ignored,  PUA is  assumed.    Answering 
  1853.     system  options  are ignored,  we send everything and  ignore  their 
  1854.     restrictions.    Compatibility codes:  only ZMO  protocol  supported 
  1855.     (rest may be in the future), ARC, XMA, and FNC are assumed, rest are 
  1856.     ignored. 
  1857.  
  1858. FSC-0025 001   AVATAR                                Complete(d) Support
  1859.  
  1860.     The stuff about the user being able to type a function key, and then 
  1861.     having  that  scan code sent out,  and the BBS using it as  a  valid 
  1862.     function  key (albiet for external-to-the-program functions)  is not 
  1863.     supported at either the BBS end nor by my internal terminal program. 
  1864.  
  1865. FTS-0004 001   EchoMail Specification                Complete(d) Support
  1866.  
  1867.     Tear ("---")  and Path ("^aPATH:") lines are not supported.  Seen-by 
  1868.     (SEEN-BY:") lines are also ignored with the exception of when we are 
  1869.     the BBS that actually creates the message.   Then a seen-by line  is 
  1870.     added just below the MSGID line (at the top of the message)  and the 
  1871.     zone:net/node  address  is  put  in.   This is  done  to  stop  non-
  1872.     Juggernaut  EchoMail  processors  from  re-sending it  back  to  us.  
  1873.     Juggernaut relies on proper EchoMail topography rather than lots  of 
  1874.     seen-by's. 
  1875.  
  1876.  
  1877. APPENDIX M
  1878.  
  1879. QWK stuff       QWK  mail  uses QMail format (not MarkMail).   It  compresses 
  1880.                 using ZIP (not LHA or ARJ). 
  1881.  
  1882.                 Notes on compatibility with various off-line readers:
  1883.  
  1884.                 SLMR105            SLMR 1.05        Greg Hewgill
  1885.                 ──bad wordwrapping of text
  1886.  
  1887.                 BABL23BA           BABBLE v1.0ß23   Marcos Della/Shad Muegge
  1888.                 ──bad wordwrapping of text
  1889.  
  1890.                 MREADR             JABBER 1.1       Marcos Della/Shad Muegge
  1891.                 ──buggy (unusable)
  1892.  
  1893.                 OFFLI142           OFFLINE 1.42     Harvey Parisien
  1894.                 ──bad wordwrapping of quoted text
  1895.  
  1896.                 BWAVE210           Blue Wave 2.10   George Hatchew
  1897.                 ──bad wordwrapping of quoted text
  1898.  
  1899.                 Best to use with JDR_BBS from the above:
  1900.                   for occasional use: OFFLINE
  1901.                   for heavy use: Blue Wave
  1902.  
  1903.                 For a off-line mail reader to be JDR_BBS friendly it must:
  1904.                   Word wrap long message lines.
  1905.                   Word  wrap long quoted message lines (maintaining ">"'s  on 
  1906.                   the new lines). 
  1907.                   Properly display ANSI's with multiple "pages" (pause before 
  1908.                   each "[2J"). 
  1909.                   Handle message area title names up to a reasonable length.
  1910.                   Name-case TO: and FROM: names.
  1911.  
  1912.                 If it want's to be really friendly:
  1913.                   Properly convert "}x" and "]x[" color codes.
  1914.  
  1915.  
  1916. APPENDIX N
  1917.  
  1918. Copyrights      Name                    Author
  1919.                 ──────────────────────  ─────────────────────────
  1920.                 LIST and SORTF          Vernon Buerg
  1921.                 DSZ and GSZ             Chuck Forsberg
  1922.                 LHA                     Harayoshu Yoshizaki
  1923.                 PKZIP, PKUNZIP, ZIP,
  1924.                 and PKLITE              Phil Katz
  1925.                 X00                     Raymond L. Gwinn
  1926.                 BASIC PDS, QUICKBASIC,
  1927.                 VISUAL BASIC, WINDOWS,
  1928.                 and MS-DOS              Microsoft
  1929.                 NORTON UTILITIES        Peter Norton
  1930.                 BIMODEM                 Erik Labs
  1931.                 THE DRAW                TheSoft
  1932.                 ARJ                     Robert K Jung
  1933.                 COMPUSHOW               Bob Berry
  1934.                 PC-WRITE                Quicksoft
  1935.                 DESQVIEW                Quarterdeck
  1936.                 and others to be noted eventually.
  1937.  
  1938.  
  1939.  
  1940.